package com.example.jobback.service.recruiter;

import com.example.jobback.dto.PublishPositionDto;
import com.example.jobback.req.recruiter.position.publish.PublishPositionReq;
import com.example.jobback.req.recruiter.position.publish.ResubmitPublishPositionReq;
import com.example.jobback.req.recruiter.position.search.RCrossSearchJobOrCompanyReq;
import com.example.jobback.req.recruiter.position.update.RCrossChangePositionReq;
import com.example.jobback.req.recruiter.position.update.UpdatePositionReq;
import com.example.jobback.resp.recruiter.position.GetCompanyPositionResp;
import com.example.jobback.resp.recruiter.position.GetUserPositionDetailResp;
import com.example.jobback.resp.recruiter.position.GetUserPositionResp;
import com.example.jobback.resp.recruiter.position.publish.*;
import com.example.jobback.resp.recruiter.position.search.RCrossSearchJobOrCompanyResp;
import com.example.jobback.resp.recruiter.position.update.CompanyPendingUpdateJobResp;
import com.example.jobback.resp.recruiter.position.update.JobChangeInformationResp;
import com.example.jobback.resp.recruiter.position.update.UpdatePositionResp;
import com.example.jobback.result.Result;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @InterfaceName: RecruiterPositionService
 * @Description: 招聘者-职位服务接口
 * @Author: lhb
 * @Date: 2025/6/21
 */
@Service
public interface RecruiterPositionService {
    Result<PublishPositionResp> publishPosition(PublishPositionReq req);

    Result<Object> cancelPublishPosition(String code);

    Result<ResubmitPublishPositionResp> resubmitPublishPosition(ResubmitPublishPositionReq req);

    Result<Object> companyVerifyPublishPositionFailed(String code, String message);

    Result<Object> companyVerifyPublishPosition(String code);

    Result<List<GetUserPublishPositionResp>> getUserPublishPositions();

    Result<List<GetCompanyPublishPositionResp>> getCompanyPublishPositions();

    Result<Object> registerPublishPosition(PublishPositionDto dto);

    Result<List<GetUserPositionResp>> getUserPositions();

    Result<List<GetCompanyPositionResp>> getCompanyPositions();

    Result<UpdatePositionResp> updateUserPosition(UpdatePositionReq req);

    Result<Object> deletePosition(Long positionId);

    Result<Object> cancelUpdateUserPosition(Long positionId);

    Result<JobChangeInformationResp> checkPositionChangeInformation(Long positionId);

    Result<Object> companyVerifyChangePosition(Long positionId);

    Result<Object> companyVerifyChangePositionFailed(Long positionId, String failMessage);

    Result<Object> changePositionInformation(RCrossChangePositionReq req);

    Result<Object> searchJobOrCompany(RCrossSearchJobOrCompanyReq req);

    Result<List<CompanyPendingUpdateJobResp>> getUpdatedPositionLists();

    Result<GetUserPublishPositionDetailResp> getUserPublishPositionByCode(String code);

    Result<GetUserPositionDetailResp> getUserPositionById(Long positionId);

//    Result<Object> searchJobOrCompany2(RCrossSearchJobOrCompanyReq req);
}
